<!DOCTYPE html>
<html lang="en-US" xmlns:th="http://www.thymeleaf.org"
      xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity5">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <title>系统简介</title>
    <link rel="stylesheet" th:href="@{~/component/layui/css/layui.css}" media="all">
</head>
<body>


<div class="layui-fluid" style="background-color: #f4f4f4;">
    <div class="layui-row layui-col-space10">

        <div class="layui-col-md6">
            <div style="padding: 16px 40px; background-color: #fff; margin: 16px 0px;border-radius: 8px;box-shadow: rgb(0 0 0 / 0.2) 0px 0px 4px;">
                <ul class="layui-timeline">
                    <h3 style="color: #666;"><i class="layui-icon layui-icon-tips"></i>&nbsp;&nbsp;系统说明</h3>
                    <hr>
                    <li class="layui-timeline-item">
                        <i class="layui-icon layui-timeline-axis"></i>
                        <div class="layui-timeline-content layui-text">
                            <h3 class="layui-timeline-title">注意</h3>
                            <p>
                                本系统为演示站点，每隔30分钟初始化数据自动还原。&nbsp;&nbsp;
                                <a href="https://gitee.com/chenhuazhan-java/frank-boot.git" target="_blank"
                                   class="layui-icon layui-icon-website">Gitee仓库地址</a>
                            </p>
                        </div>
                    </li>

                    <li class="layui-timeline-item">
                        <i class="layui-icon layui-timeline-axis"></i>
                        <div class="layui-timeline-content layui-text">
                            <h3 class="layui-timeline-title">前言</h3>
                            <p>
                                这是一款基于SpringBoot+SpringSecurity+Mybatis的RBAC权限管理系统,目前只做了简单的权限功能，经简单测试功能基本正常
                            </p>
                        </div>
                    </li>

                    <li class="layui-timeline-item">
                        <i class="layui-icon layui-timeline-axis"></i>
                        <div class="layui-timeline-content layui-text">
                            <h3 class="layui-timeline-title">说明</h3>
                            <p>
                                本项目目前只适合作为一个学习项目，暂不建议用于实际开发，未经过系统全面测试，肯定存在着不少的bug
                            </p>
                        </div>
                    </li>

                    <li class="layui-timeline-item">
                        <i class="layui-icon layui-timeline-axis"></i>
                        <div class="layui-timeline-content layui-text">
                            <h3 class="layui-timeline-title">项目中初始用户和密码</h3>
                            <p>
                                用户：admin 密码：123456<br>
                                新建用户的密码统一默认：123456<br>
                                目前修改密码功能暂未开发<br>
                            </p>
                        </div>
                    </li>

                    <li class="layui-timeline-item">
                        <i class="layui-icon layui-timeline-axis"></i>
                        <div class="layui-timeline-content layui-text">
                            <h3 class="layui-timeline-title">系统功能</h3>
                            <p>
                                - 用户管理：提供系统用户配置及角色关联<br>
                                - 角色管理：提供角色与菜单权限关联<br>
                                - 菜单管理：提供系统菜单及目录及按钮配置操作<br>
                                - 部门管理：提供系统部门配置<br>
                            </p>
                        </div>
                    </li>

                    <li class="layui-timeline-item">
                        <i class="layui-icon layui-timeline-axis"></i>
                        <div class="layui-timeline-content layui-text">
                            <h3 class="layui-timeline-title">涉及的技术及框架</h3>
                            <p>
                                - Java1.8 <br>
                                - SpringBoot2.4.1 <br>
                                - SpringSecurity <br>
                                - MyBatis<br>
                                - MySql5.7<br>
                                - Redis<br>
                                - Druid<br>
                                - Thymeleaf<br>
                                - 前端&nbsp;&nbsp;<a href="https://www.layui.com/" target="_blank">Layui</a><br>
                                - 前端基于layui的&nbsp;&nbsp; <a href="http://www.pearadmin.com/" target="_blank">pear admin
                                layui</a><br>
                                - ...
                            </p>
                        </div>
                    </li>

                    <li class="layui-timeline-item">
                        <i class="layui-icon layui-timeline-axis"></i>
                        <div class="layui-timeline-content layui-text">
                            <h3 class="layui-timeline-title">安装运行</h3>
                            <p>
                                1、下载源码<br>
                                2、修改配置文件的数据库链接信息<br>
                                3、由于项目引入了flyway,所以不需要自己手动导入sql脚本，只需要在你自己的数据库中建好配置文件里配置的数据库名即可。<br>
                                4、启动项目，在浏览器中输 http://localhost:8089/ 即可访问系统<br>
                                5、注意需要mysql5.7版本，mysql5.6版本不支持flyway<br>
                            </p>
                        </div>
                    </li>


                </ul>
            </div>
        </div>
        <div class="layui-col-md6">

            <div style="padding: 16px 40px; background-color: #fff; margin: 16px 0px; border-radius: 8px;box-shadow: rgb(0 0 0 / 0.2) 0px 0px 4px;">
                <h3 style="color: #666;"><i class="layui-icon layui-icon-date"></i>&nbsp;&nbsp;更新日志</h3>
                <hr>
                <ul class="layui-timeline">

                    <li class="layui-timeline-item">
                        <i class="layui-icon layui-timeline-axis"></i>
                        <div class="layui-timeline-content layui-text">
                            <h3 class="layui-timeline-title">2021-07-04</h3>
                            <p>
                                优化配置返回数据中的字段null值统一替换为“”空字符串。添加了user表的用户账号字段和角色表的角色key字段唯一索引，防止重复。
                            </p>
                        </div>
                    </li>

                    <li class="layui-timeline-item">
                        <i class="layui-icon layui-timeline-axis"></i>
                        <div class="layui-timeline-content layui-text">
                            <h3 class="layui-timeline-title">2021-07-03</h3>
                            <p>
                                优化防xss攻击，通过配置XssFilter过滤器的方式只能过滤表单格式的参数（application/x-www-form-urlencoded、multipart/form-data）<br>
                                通过继承WebMvcConfigurationSupport类，重写extendMessageConverters方法，替换默认的MappingJackson2HttpMessageConverter，过滤(json格式的请求参数)xss
                            </p>
                        </div>
                    </li>

                    <li class="layui-timeline-item">
                        <i class="layui-icon layui-timeline-axis"></i>
                        <div class="layui-timeline-content layui-text">
                            <h3 class="layui-timeline-title">2021-07-02</h3>
                            <p>
                                引入redisson分布式锁，通过自定义注解@ApiIdempotent实现接口幂等性。只需要在controller接口上加上注解就行，非常灵活。<br>
                                实现方式：用分布式锁以（当前登录用户名+请求路径）作为锁对象，即同一个用户在锁时间内（默认1秒，可自定义时间）对同一个接口发起多次请求，只有一次有效。<br>
                                应用场景：添加数据的时候防止用户疯狂快速点击提交，造成添加多条重复数据。
                            </p>
                        </div>
                    </li>

                    <li class="layui-timeline-item">
                        <i class="layui-icon layui-timeline-axis"></i>
                        <div class="layui-timeline-content layui-text">
                            <h3 class="layui-timeline-title">2021-07-01</h3>
                            <p>
                                集成redis，可通过配置spring.redis.enabled的值决定是否启用redis功能，设成false不启用，可以不用跑redis服务。当有需要用到redis的时候设成true就可以直接使用redis的功能了。非常灵活且人性化。
                            </p>
                        </div>
                    </li>

                    <li class="layui-timeline-item">
                        <i class="layui-icon layui-timeline-axis"></i>
                        <div class="layui-timeline-content layui-text">
                            <h3 class="layui-timeline-title">2021-06-30</h3>
                            <p>
                                优化代码；加了一些注释；在mapper接口上加上注解@Repository消除idea报红色下划线。
                            </p>
                        </div>
                    </li>

                    <li class="layui-timeline-item">
                        <i class="layui-icon layui-timeline-axis"></i>
                        <div class="layui-timeline-content layui-text">
                            <h3 class="layui-timeline-title">2021-06-28</h3>
                            <p>
                                添加防XSS攻击，分别对表单类型和json类型的参数进行过滤，防止XSS攻击。
                            </p>
                        </div>
                    </li>

                    <li class="layui-timeline-item">
                        <i class="layui-icon layui-timeline-axis"></i>
                        <div class="layui-timeline-content layui-text">
                            <h3 class="layui-timeline-title">2021-06-25</h3>
                            <p>
                                引入数据库版本管理flyway，方便管理数据库表变更。并调整了项目部分文件结构。
                            </p>
                        </div>
                    </li>

                    <li class="layui-timeline-item">
                        <i class="layui-icon layui-timeline-axis"></i>
                        <div class="layui-timeline-content layui-text">
                            <h3 class="layui-timeline-title">2021-06-20</h3>
                            <p>
                                实现了角色权限控制精确到按钮级别，可以对不同角色配置不同的菜单权限，比如没有新增权限，则在前端页面不会展示新增按钮，同时后端调用新增接口也会提示无操作权限。
                            </p>
                        </div>
                    </li>

                    <li class="layui-timeline-item">
                        <i class="layui-icon layui-timeline-axis"></i>
                        <div class="layui-timeline-content layui-text">
                            <h3 class="layui-timeline-title">2021-05-30</h3>
                            <p>
                                实现了监控管理模块的服务器信息监控，可以查看到服务器cpu、内存、JVM、硬盘等使用情况
                            </p>
                        </div>
                    </li>


                    <li class="layui-timeline-item">
                        <i class="layui-icon layui-timeline-axis"></i>
                        <div class="layui-timeline-content layui-text">
                            <h3 class="layui-timeline-title">2021-05-23</h3>
                            <p>
                                通过实现SpringSecurity提供的 AuthenticationSuccessHandler 接口<br>和 AuthenticationFailureHandler
                                接口完成用户登录日志的记录和用户在线或离线状态查看
                            </p>
                        </div>
                    </li>

                    <li class="layui-timeline-item">
                        <i class="layui-icon layui-timeline-axis"></i>
                        <div class="layui-timeline-content layui-text">
                            <h3 class="layui-timeline-title">2021-05-02</h3>
                            <p>
                                重新优化登录界面，替换了登录界面
                            </p>
                        </div>
                    </li>


                    <li class="layui-timeline-item">
                        <i class="layui-icon layui-timeline-axis"></i>
                        <div class="layui-timeline-content layui-text">
                            <h3 class="layui-timeline-title">2021-04-17</h3>
                            <p>
                                通过SpringAop面向切面实现已注解的方式记录操作日志功能
                            </p>
                        </div>
                    </li>

                    <li class="layui-timeline-item">
                        <i class="layui-icon layui-timeline-axis"></i>
                        <div class="layui-timeline-content layui-text">
                            <h3 class="layui-timeline-title">2021-01-20</h3>
                            <p>
                                重新优化了现有功能模块的部分代码逻辑
                            </p>
                        </div>
                    </li>

                    <li class="layui-timeline-item">
                        <i class="layui-icon layui-timeline-axis"></i>
                        <div class="layui-timeline-content layui-text">
                            <h3 class="layui-timeline-title">2021-01-10</h3>
                            <p>
                                Frank Boot 系统上线，权限功能基本完善
                            </p>
                        </div>
                    </li>

                    <li class="layui-timeline-item">
                        <i class="layui-icon layui-timeline-axis"></i>
                        <div class="layui-timeline-content layui-text">
                            <h3 class="layui-timeline-title">2020-12-31</h3>
                            <p>
                                开始着手开发基于RBAC的权限管理系统Frank Boot。
                            </p>
                        </div>
                    </li>
                </ul>
            </div>
        </div>
    </div>
</div>
<script th:src="@{~/component/layui/layui.js}" charset="utf-8"></script>
<script th:src="@{~/component/pear/pear.js}" charset="utf-8"></script>
<script th:src="@{~/common/js/jquery-1.11.2.min.js}" charset="utf-8"></script>
<script>
    layui.use(['form', 'layedit', 'laydate', 'element', 'table', 'dtree'], function () {
        var form = layui.form;

    });
</script>

</body>
</html>
